package com.gles.framework;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.Window;
import android.view.WindowManager;

public class AndroidGLESFrameWorkActivity extends Activity implements ActivityMediator
{
	// OpenGLESのview
		private OpenGLView		m_openGLView;

		// スレッドからactivityに命令を出し実行するため
		private Handler			m_handler;


	    /** Called when the activity is first created. */
	    @Override
	    public void onCreate(Bundle savedInstanceState)
	    {
	        super.onCreate(savedInstanceState);

	        // 縦横の固定
	        controlOrientationFix( true );

	        // タイトルバー削除
	        requestWindowFeature( Window.FEATURE_NO_TITLE );

	        // ステータスバー削除
	        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

	        // GLES用のViewを設定
	        m_openGLView =  new OpenGLView( this, this );

	        // 画面にセット
	        setContentView( m_openGLView );

	        m_handler = new Handler();
	    }


	    @Override
		public void finish()
	    {
	    	super.finish();
	    }

		/**
		 *
		 * @param event
		 * @return
		 */
		@Override
		public boolean dispatchKeyEvent(KeyEvent event)
		{

			return false;
		}

	    /**
		 * 縦横固定の設定をActivityに適用する
		 *
		 * @param fixOrient 固定するならtrue，回転するように戻すならfalse
		 */
		private void controlOrientationFix( boolean fixOrient )
		{
			if (fixOrient) {
				int ori = getResources().getConfiguration().orientation;
				if (ori == Configuration.ORIENTATION_LANDSCAPE) {
					setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
				} else {
					setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
				}
			} else {
				setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED );
			}
		}

	/*************  以下 ActivityMediatorの実装  *********************************************************/

		/**
		 * ダイアログの表示
		 *
		 * @param title
		 * @param message
		 * @param button
		 */
		public void showDialog( final String title, final String message, final String[] button )
		{
			final Context context = this;

			m_handler.post
			(
				new Runnable()
				{
					public void run()
					{
						final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
						alertDialogBuilder.setTitle( title );
						alertDialogBuilder.setMessage( message );

//						for( String buttonName : button )
//						{
	//
//						}

						alertDialogBuilder.create();
						alertDialogBuilder.show();
					}
				}
			);
		}

		/**
		 * 画像の読み込み
		 *
		 * @param id 画像ID
		 * @return　bitmapクラス
		 */
		public Bitmap loadImage( int id )
		{
			Bitmap bmp = BitmapFactory.decodeResource( getResources(), id );
			return bmp;
		}
}